﻿package view.component
{
    import __AS3__.vec.*;
    import com.core.*;
    import com.greensock.*;
    import com.sh.game.global.*;
    import com.sh.game.ui.text.*;
    import com.sh.game.util.*;
    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.net.*;
    import flash.utils.*;
    import morn.core.components.*;
    import morn.core.handlers.*;

    public class HornItem extends HornUI
    {
        private var _showTimes:int = 0;
        private var _curTimes:int = 0;
        public var mFilter:DropShadowFilter;
        private var _callBack:Function;
        private var rtf:RichTextField;
        private var useTime:Number = 0;
        private var eff:Clip;
        private var isChecking:Boolean = false;
        private var faceVec:Vector.<Clip>;
        private var xDis:int = 0;

        public function HornItem(param1:Object, param2:int, param3:Function)
        {
            this.mFilter = new DropShadowFilter(0, 0, 0, 0.8, 2, 2, 10, 1);
            this.faceVec = new Vector.<Clip>;
            this._callBack = param3;
            this._showTimes = param2;
            var _loc_4:* = param1.TalkContent;
            this.rtf = new RichTextField();
            this.rtf.x = 320;
            this.rtf.setSize(640, 24);
            this.rtf.textfield.wordWrap = false;
            this.rtf.textfield.multiline = false;
            this.rtf.type = RichTextField.DYNAMIC;
            this.rtf.html = true;
            this.rtf.textfield.selectable = false;
            this.rtf.textfield.filters = [this.mFilter];
            var _loc_5:Array = [];
            if (param1.isGm == "gm")
            {
                img_gm.visible = true;
                img_gm.url = "png.common.gm";
                this.xDis = 82;
                this.rtf.addEventListener(TextEvent.LINK, this.doLink);
            }
            else if (param1.isSys == "system")
            {
                img_gm.visible = true;
                img_gm.url = "png.common.system";
                this.xDis = 82;
            }
            else
            {
                img_gm.visible = false;
                this.xDis = 40;
            }
            this.checkSprites(param1.titleMsg + param1.RoleName + ":" + param1.tempContent, _loc_5);
            this.rtf.append(this.getMsg(_loc_4), _loc_5, false, null, false);
            if (_loc_5.length > 0)
            {
                this.rtf.setSize(this.rtf.width, 31);
                this.rtf.y = 0;
            }
            else
            {
                this.rtf.setSize(this.rtf.width, 20);
                this.rtf.y = 5;
            }
            this.addChild(this.rtf);
            this.useTime = param1.tempContent.length / 4 + 15;
            TweenLite.to(this.rtf, this.useTime, {x:-this.rtf.width + this.xDis, onComplete:this.checkTimes});
            var _loc_6:* = new Shape();
            new Shape().graphics.beginFill(13421772, 0.6);
            _loc_6.graphics.drawRect(this.xDis, 5, 300 - this.xDis, 20);
            _loc_6.graphics.endFill();
            this.addChild(_loc_6);
            this.rtf.mask = _loc_6;
            App.mloader3.loadSWF(Config.getUrl("assets/images/speff/horn.swf"), 1, new Handler(this.onComp));
            return;
        }// end function

        protected function doLink(event:TextEvent) : void
        {
            var _loc_2:* = event.text;
            var _loc_3:* = new URLRequest(_loc_2);
            var _loc_4:String = "_blank";
            navigateToURL(_loc_3, _loc_4);
            return;
        }// end function

        private function onComp(param1) : void
        {
            this.eff = new Clip("png.speff.horn", 12, 1);
            this.eff.autoPlay = true;
            this.eff.sizeGrid = "25,20,25,20";
            this.eff.x = -6;
            this.eff.y = -2;
            this.eff.width = 325;
            this.eff.height = 36;
            this.eff.blendMode = BlendMode.ADD;
            this.eff.interval = 160;
            this.eff.mouseEnabled = false;
            this.addChild(this.eff);
            return;
        }// end function

        private function checkTimes() : void
        {
            var _loc_1:String = this;
            var _loc_2:* = this._curTimes + 1;
            _loc_1._curTimes = _loc_2;
            if (this._curTimes >= this._showTimes)
            {
                this._callBack(this);
            }
            else
            {
                this.rtf.x = 320;
                TweenLite.to(this.rtf, this.useTime, {x:-this.rtf.width + this.xDis, onComplete:this.checkTimes});
            }
            return;
        }// end function

        public function removeShow() : void
        {
            TweenLite.to(this, 1, {scaleY:0, y:this.y + 31, alpha:0, onComplete:this.dispose});
            return;
        }// end function

        public function dispose() : void
        {
            this._callBack = null;
            this.parent.removeChild(this);
            return;
        }// end function

        private function checkSprites(param1:String, param2:Array) : void
        {
            var _loc_12:Clip = null;
            var _loc_13:Object = null;
            var _loc_14:int = 0;
            var _loc_16:String = null;
            var _loc_3:* = ModelProxy.getValue("data", "chatTrie");
            var _loc_4:* = param1.length;
            var _loc_5:String = "";
            var _loc_6:* = _loc_3.getRoot();
            var _loc_7:* = ConfigDictionary.data.face;
            var _loc_8:int = 0;
            var _loc_9:Boolean = false;
            var _loc_10:Boolean = false;
            var _loc_11:Boolean = true;
            var _loc_15:int = 0;
            while (_loc_15 < _loc_4)
            {
                
                _loc_16 = param1.charAt(_loc_15);
                if (this.isChecking)
                {
                    if (_loc_6[_loc_16])
                    {
                        _loc_6 = _loc_6[_loc_16];
                        _loc_5 = _loc_5 + _loc_16;
                        if (_loc_15 == (_loc_4 - 1))
                        {
                            if (_loc_6[""])
                            {
                                this.isChecking = false;
                                _loc_9 = false;
                                _loc_10 = false;
                                _loc_11 = false;
                                _loc_6 = _loc_3.getRoot();
                                _loc_8++;
                                _loc_14 = 0;
                                for each (_loc_13 in _loc_7)
                                {
                                    
                                    if (_loc_13.protocol == _loc_5)
                                    {
                                        _loc_14 = _loc_13.times;
                                        break;
                                    }
                                }
                                _loc_12 = new Clip("png.common." + _loc_5.substr(1), _loc_14, 1);
                                this.faceVec.push(_loc_12);
                                _loc_12.autoPlay = true;
                                _loc_12.interval = 900 / _loc_14 + 60;
                                param2.push({index:_loc_8, src:_loc_12});
                                _loc_5 = "";
                            }
                        }
                    }
                    else if (_loc_6[""])
                    {
                        _loc_6 = _loc_3.getRoot();
                        _loc_14 = 0;
                        for each (_loc_13 in _loc_7)
                        {
                            
                            if (_loc_13.protocol == _loc_5)
                            {
                                _loc_14 = _loc_13.times;
                                break;
                            }
                        }
                        _loc_12 = new Clip("png.common." + _loc_5.substr(1), _loc_14, 1);
                        this.faceVec.push(_loc_12);
                        _loc_12.autoPlay = true;
                        _loc_12.interval = 900 / _loc_14 + 60;
                        _loc_5 = "";
                        if (_loc_6[_loc_16])
                        {
                            if (!_loc_9)
                            {
                                if (!_loc_10)
                                {
                                    _loc_8++;
                                }
                            }
                            this.isChecking = true;
                            _loc_9 = true;
                            _loc_10 = false;
                            _loc_11 = false;
                            _loc_6 = _loc_6[_loc_16];
                            _loc_5 = _loc_5 + _loc_16;
                            param2.push({index:_loc_8, src:_loc_12});
                        }
                        else
                        {
                            if (_loc_11)
                            {
                                _loc_8++;
                            }
                            param2.push({index:_loc_8, src:_loc_12});
                            this.isChecking = false;
                            _loc_11 = false;
                            _loc_8++;
                            _loc_10 = true;
                            _loc_9 = false;
                        }
                    }
                    else
                    {
                        _loc_6 = _loc_3.getRoot();
                        if (_loc_6[_loc_16])
                        {
                            this.isChecking = true;
                            _loc_6 = _loc_6[_loc_16];
                            _loc_8 = _loc_8 + _loc_5.length;
                            _loc_5 = "";
                            _loc_5 = _loc_5 + _loc_16;
                        }
                        else
                        {
                            this.isChecking = false;
                            _loc_9 = false;
                            _loc_5 = _loc_5 + _loc_16;
                            _loc_8 = _loc_8 + _loc_5.length;
                            _loc_5 = "";
                        }
                    }
                }
                else if (_loc_6[_loc_16])
                {
                    this.isChecking = true;
                    _loc_6 = _loc_6[_loc_16];
                    _loc_5 = _loc_5 + _loc_16;
                }
                else
                {
                    _loc_8++;
                }
                _loc_15++;
            }
            return;
        }// end function

        private function getMsg(param1:String) : String
        {
            var _loc_8:String = null;
            var _loc_2:* = ModelProxy.getValue("data", "chatTrie");
            var _loc_3:* = param1.length;
            var _loc_4:String = "";
            var _loc_5:String = "";
            var _loc_6:* = _loc_2.getRoot();
            var _loc_7:int = 0;
            while (_loc_7 < _loc_3)
            {
                
                _loc_8 = param1.charAt(_loc_7);
                if (this.isChecking)
                {
                    if (_loc_6[_loc_8])
                    {
                        _loc_6 = _loc_6[_loc_8];
                        _loc_5 = _loc_5 + _loc_8;
                    }
                    else if (_loc_6[""])
                    {
                        _loc_6 = _loc_2.getRoot();
                        _loc_5 = "";
                        if (_loc_6[_loc_8])
                        {
                            this.isChecking = true;
                            _loc_6 = _loc_6[_loc_8];
                            _loc_5 = _loc_5 + _loc_8;
                        }
                        else
                        {
                            this.isChecking = false;
                            _loc_4 = _loc_4 + _loc_8;
                        }
                    }
                    else
                    {
                        _loc_6 = _loc_2.getRoot();
                        if (_loc_6[_loc_8])
                        {
                            this.isChecking = true;
                            _loc_6 = _loc_6[_loc_8];
                            _loc_4 = _loc_4 + _loc_5;
                            _loc_5 = "";
                            _loc_5 = _loc_5 + _loc_8;
                        }
                        else
                        {
                            this.isChecking = false;
                            _loc_5 = _loc_5 + _loc_8;
                            _loc_4 = _loc_4 + _loc_5;
                            _loc_5 = "";
                        }
                    }
                }
                else if (_loc_6[_loc_8])
                {
                    this.isChecking = true;
                    _loc_6 = _loc_6[_loc_8];
                    _loc_5 = _loc_5 + _loc_8;
                }
                else
                {
                    _loc_4 = _loc_4 + _loc_8;
                }
                _loc_7++;
            }
            return _loc_4;
        }// end function

    }
}
